//
//  main.cpp
//  DataStructureC++
//
//  Created by zhangbaochuan on 2020/4/10.
//  Copyright © 2020 Geex. All rights reserved.
//


#include <iostream>
#include <vector>
#include <cassert>

#include "heapManager.hpp"
#include "BSTTree.hpp"
#include "DynamicArr.hpp"
#include "UnionFind.hpp"



//namespace testBST {
//    void testBSTObject1() {
//        int n = 10;
//        int arr[10] = {11,2,3,4,5,6,7,8,9,10};
//        for (int i = 0; i< n; i++) {
//            std::cout << arr[i] << ",   ";
//        }
//        
//        BST<int, int> bst = BST<int, int>();
//        
//        for (int i = 0; i< n; i++) {
//            bst.insert(arr[i], 1);
//        }
//        
//        bst.bstPrint("二分搜索树", arr);
//    }
//}

using namespace std;

class Solution {
        
public:
    void sortColors(vector<int>& nums) {
        int count[3] = {0};
        for (int i = 0; i < nums.size(); i++) {
            assert(nums[i] >= 0 && nums[i] <= 2);
            count[nums[i]] ++;
        }
        
        int index = 0;
        for (int i = 0 ; i< count[0]; i++) {
            nums[index++] = 0;
        }
        for (int i = 0; i < count[1]; i++) {
            nums[index++] = 1;
        }
        for (int i = 0; i < count[2]; i++) {
            nums[index++] = 2;
        }
    }
};


int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
//    int arr[] = {10,2,3,4,5,6,7,8,9};
//    MaxHeap maxheap = MaxHeap(10);
//    for (int i = 0; i < 9; i++) {
//        maxheap.insert(arr[i]);
//    }
//
//
//    maxheap.testPrint();
//
//    maxheap.extraMax();
//    maxheap.testShiftDownPrint();
//    testBSTObject1("二分搜索树");
//    testDynamic("数组");
    
//    UnionFindTestHelper::testUF(10);
//    UnionFindTestHelper::test();
    int arr[] = {0,0,1,0,2,1};
    vector<int> vec(arr, arr + sizeof(arr)/sizeof(int));
    Solution().sortColors(vec);
    
    
    return 0;
}
